import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import px2rem from "postcss-plugin-px2rem";
import { resolve } from "path";

// 插件的参数设置
const px2remOptions = {
  rootValue: 16, //换算基数， 默认100 ,根元素字体的大小
  unitPrecision: 5, //允许REM单位增长到的十进制数字，其实就是精度控制
  // propWhiteList: [], // 白名单
  // propBlackList: [], // 黑名单
  exclude: "node_modules", //默认false，排除某些文件夹的方法，例如/(node_module)/ 。
  // selectorBlackList: [], //要忽略并保留为 px 的选择器。可以是字符串或者正则表达式
  // ignoreIdentifier: false, //（boolean/string）一种忽略单个属性的方法，当启用 ignoreIdentifier 时，replace将自动设置为true。
  // replace: true, // （布尔值）替换包含 rems 的规则，而不是添加后备规则。
  mediaQuery: false, //（布尔值）允许在媒体查询中转换px
  minPixelValue: 0, // 设置要替换的最小像素值。 默认 0
};

// https://vitejs.dev/config/
export default defineConfig({
  server: {
    hmr: true,
    port: 8080,
    host: "0.0.0.0",
    proxy: {
      "/hqfy-screen-service": {
        target: "http://121.89.199.238",
        changeOrigin: true,
      },
    },
  },
  build: {
    rollupOptions: {
      input: {
        index: resolve(__dirname, "index.html"),
      },
      output: {
        chunkFileNames: "static/js/[name]-[hash].js",
        entryFileNames: "static/js/[name]-[hash].js",
        assetFileNames: (assetInfo) => {
          if (
            assetInfo.type === "asset" &&
            /\.(jpe?g|png|gif|svg)$/i.test(assetInfo.name)
          ) {
            return "static/img/[name].[hash][ext]";
          }
          if (
            assetInfo.type === "asset" &&
            /\.(ttf|woff|woff2|eot)$/i.test(assetInfo.name)
          ) {
            return "static/fonts/[name].[hash][ext]";
          }
          return "static/[ext]/name1-[hash].[ext]";
        },
        manualChunks: {
          echarts: ["echarts"],
        },
      },
    },
  },
  base: "./", // 这里更改打包相对绝对路径
  minify: true, // 是否压缩代码
  sourceMap: true,
  plugins: [vue()],
  resolve: {
    // 设置文件./src路径为 @
    alias: [
      {
        find: "@",
        replacement: resolve(__dirname, "./src"),
      },
    ],
  },
  css: {
    postcss: {
      plugins: [px2rem(px2remOptions)],
    },
    preprocessorOptions: {
      scss: {
        api: "modern-compiler", // or 'modern'
      },
    },
  },
});
